package com.ftg.learn.lesson6;

import java.util.Map;

/**
 * 类的组成
 * <p>
 * 类里面的构成
 *
 * @author kangjx
 * @version 1.0
 * @date 2023/6/28 下午1:11
 */
public class ClassConstitute {

    public ClassConstitute(){
        //当你想对这个类实例化的时候要调用这个方法
    }

    /**
     * 类的成员变量
     * 全局变量 :
     * static 静态 : 类变量   可以用类名称直接.出来
     * non-static 非静态: 实例变量   只能通过实例.出来
     *
     * public    :  公共
     * protected ： 受保护
     * default   ： 友好的，默认的
     * private   : 私有的
     *
     * private 单身狗 - 》 房子-WC 私有的     本类可用
     * default 二人世界            同一个屋里人可以使用  本类 本包
     * protected 三口之家            自已   同屋里的   子 本类 本包  子类
     * public 公厕                所有人都可以
     *
     *
     * final : 表示不可变 (常 量)
     *
     * 面向对象的 三大特征  ： 封装(抽象) 继承  多态
     *
     *
     */
    static int a = 9;
    public int b = 13;
    protected int c = 34;
    private final int d = 45;

    private int e;


    /**
     * 开闭原则 : 为私有的属性开放一个公共方法
     */
    //setter
    public void setE(int e){
        this.e = e;
    }

    //getter  E Access method
    public int getE(){
        return this.e;
    }

    /**
     * 类的成员方法
     * static
     * non-static
     * constructor 构造方法
     *
     * 方法重载 ：
     * access method
     */

    /**
     * 类的成员类
     * 内部类
     */
     class Abc{

        public Abc(){
            //内部的构造方法
        }

        int a = 9;

        public void test1(){

        }

    }

    public Abc getAbc(){
        return new Abc();
    }

    public static void main(String[] args) {
      ClassConstitute cc = new ClassConstitute();
      Abc a1 = cc.new Abc();

      Abc a2 = new ClassConstitute().new Abc();
    }
}
